<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <style type="text/css">
      body {
        font-family: 'Georgia', serif;
        font-size: 17px;
      }

      .content {
        width: 530px;
        margin: 40px auto;
      }

      h1, h2, h3, h4, h5 {
        font-family: 'Garamond', 'Georgia', serif;
        font-weight: normal;
        color: #444;
      }

      blockquote {
        font-style: italic;
        color: #444;
      }

      ul {
        margin: 15px 0 15 px 0;
        list-style: none;
        line-height: 1.4;
      }

      ul li:before {
        content: '\2014\a0';
        color: #888;
        position: absolute;
        margin-left: -16px;
      }
    </style>

  <title>Finagle</title>
  <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-39101739-4', 'twitter.github.io');
    ga('send', 'pageview');

  </script>
  </head>

  <body>
  <a href="https://github.com/twitter/finagle"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png" alt="Fork me on GitHub"></a>
  <div class="content">
    <h1>Finagle</h1>

    <blockquote style="margin: 0;">
    <p>
      Finagle is an extensible RPC system for the JVM, used to
      construct high-concurrency servers. Finagle implements uniform
      client and server APIs for several protocols, and is designed
      for high performance and concurrency. Most of Finagle’s code is
      protocol agnostic, simplifying the implementation of new
      protocols.
    </p>
    <p>
      Finagle is written in Scala, but provides both Scala and Java idiomatic
      APIs.
    </p>
    </blockquote>

    <ul>
      <li><a href="https://github.com/twitter/finagle">Github project</a></li>
      <li><a href="guide">User’s guide</a></li>
      <li><a href="docs/#com.twitter.finagle.package">API documentation</a></li>
      <li><a href="https://gitter.im/twitter/finagle">Gitter channel</a></li>
      <li><a href="http://groups.google.com/group/finaglers?hl=en">Google groups</a></li>
    </ul>

    <h2>Contributing</h2>

    We feel that a welcoming community is important and we ask that you follow Twitter’s
    <a href="https://engineering.twitter.com/opensource/code-of-conduct">Open Source Code of Conduct</a>
    in all interactions with the community.

    Finagle is actively maintained by Twitter’s infrastructure
    team, but we have <a href="https://github.com/twitter/finagle/graphs/contributors">
    many external contributors</a> as well.

    The master branch represents the most recent published release
    while active development happens on the develop branch.

    Before endeavoring on large
    changes, please discuss them with the
    <a href="http://groups.google.com/group/finaglers?hl=en">Google groups</a>
    to receive feedback and suggestions.

    For all patches, please review our
    <a href="https://github.com/twitter/finagle/blob/develop/CONTRIBUTING.md">contributing docs</a>.

    <h2>Other resources</h2>

    <ul>
      <li><a href="https://blog.twitter.com/2011/finagle-a-protocol-agnostic-rpc-system">
        Twitter engineering blog post</a> motivating and introducting Finagle</li>
      <li>Twitter’s <a href="http://twitter.github.com/scala_school/">Scala School</a> ends with an
      <a href="http://twitter.github.com/scala_school/finagle.html">introduction to Finagle</a>, and finally
      <a href="http://twitter.github.com/scala_school/searchbird.html">an example distributed system</a>.</li>
      <li>A <a href="http://days2011.scala-lang.org/node/138/286">talk introducing Finagle</a>, given by <a href="https://github.com/mariusaeriksen">Marius</a> at ScalaDays 2011</li>
      <li><a href="http://monkey.org/~marius/talks/twittersystems/#1">Slides</a> from another talk explaining
      the role of Finagle in Twitter’s distributed systems</li>
      <li>A <a href="http://blog.oskarsson.nu/post/40196324612/the-twitter-stack">blog post</a>
      explaining Twitter’s server stack, in which Finagle plays a central role</li>
      <li>Matt Ho’s <a href="http://marakana.com/s/post/1416/twitter_finagle_for_the_asynchronous_programmer_matt_ho_video">NEScala talk</a> about Finagle</li>
    </ul>

    <h2>Companion Projects</h2>
    <blockquote>In no particular order...</blockquote>
    <ul>
      <li><a href="https://github.com/twitter/finatra">Finatra</a> - fast, testable, Scala services built on TwitterServer and Finagle</li>
      <li><a href="https://github.com/finagle/finch">Finch</a> - a pure functional wrapper around Finagle HTTP built with Shapeless and Cats</li>
      <li><a href="https://github.com/finagle/finagle-serial">Finagle Serial</a> - a Mux-powered, Finagle protocol over Scala's case classes with a serialization library of your choice</li>
      <li><a href="https://github.com/finagle/finagle-oauth2">Finagle OAuth2</a> - an OAuth2 server-side provider for Finagle</li>
      <li><a href="https://github.com/novus/unfinagled">Unfinagled</a> - a small library for using unfiltered as a Finagle frontend</li>
      <li><a href="https://github.com/finagle/finagle-postgres">Finagle Postgres</a> - Postgres protocol support for Finagle</li>
      <li><a href="https://github.com/sprsquish/finagle-irc">Finagle IRC</a> - an implementation of the IRC protocol on Finagle</li>
      <li><a href="https://github.com/sprsquish/finagle-websocket">WebSockets implementation for Finagle</a></li>
      <li><a href="https://github.com/evnm/fintop">Fintop</a> - a top-like utility for monitoring Finagle services</li>
      <li><a href="http://fintrospect.io/">Fintrospect</a> - adds an intelligent HTTP routing layer to Finagle. It provides a simple way to implement contracts for both server and client-side HTTP services</li>
    </ul>
  </div>
  </body>
</html>
